package com.Dec_Eleven;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Solution56 {

//    public int[][] merge(int[][] intervals) {
//        Arrays.sort(intervals,(a,b)->Integer.compare(a[0],b[0]));
//        int start=intervals[0][0];
//        int end=intervals[0][1];
//        //System.out.println(Arrays.deepToString(intervals));
//        List<int[]> list=new ArrayList<>();
//        for (int i = 1; i < intervals.length; i++) {
//            if (intervals[i][0]<=intervals[i-1][1]&&intervals[i][1]>=intervals[i-1][1]) {
//                end=intervals[i][1];
//            }else if (intervals[i][0]<=intervals[i-1][1]&&intervals[i][1]<intervals[i-1][1])
//            {
//                end=intervals[i-1][1];
//            }
//            else {
//                    list.add(new int[]{start,end});
//                    start=intervals[i][0];
//                    end=intervals[i][1];
//                }
//            }
//        list.add(new int[]{start,end});
//        return list.toArray(new int[0][]);
//    }

    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals,(a,b)->Integer.compare(a[0],b[0]));
        List<int[]> list=new ArrayList<>(Arrays.asList(intervals));
        int i=0,j=1;
        while (i<list.size()&&j<list.size())
        {
            int[] ii=list.get(i);
            int[] jj=list.get(j);
            if (ii[1]>=jj[0])
            {
                ii[1]=Math.max(ii[1],jj[1]);
                list.remove(j);
            }else
            {
                i++;
                j++;
            }
        }
        return list.toArray(new int[0][]);
    }

    public static void main(String[] args) {
        Solution56 solution56=new Solution56();
        System.out.println(Arrays.deepToString(solution56.merge(new int[][]{{1,4}, {2,3}})));
    }

}
